package main

import (
	"fmt"
	"sync"
)

// 采用计数法，统计每次开启的协程
// 开启一个协程会记录一次，等协程结束后再减1
// 主协程内部判断数字，如果存在数字，说明有协程还没结束，会继续等待，直到计数为0，所有的协程都结束。
// 1.定义变量用于计数
var wg sync.WaitGroup

func test() {
	for i := 1; i <= 10; i++ {
		fmt.Println("子协程test:", i)
	}
	// 3.计数减1
	wg.Done()
}

func main() {
	// 2.计数加1
	wg.Add(1)
	go test() // 开启协程
	for i := 1; i <= 10; i++ {
		fmt.Println("主协程：", i)
	}
	// 4.程序结束之前，添加等待
	wg.Wait()
	fmt.Println("程序运行结束")
}
